Android 6 by Massimo Carli
autore:Massimo Carli [Carli, Massimo]
La lingua: ita
Format: epub
ISBN: 8123fbc96339ac3f30de431aba56651468414ba8
editore: Apogeo
pubblicato: 2016-04-11T16:00:00+00:00
Utilizzare elementi di tipo diverso
Nella parte dedicata all’utilizzo delle ListView abbiamo visto come sia possibile gestire righe di tipo diverso attraverso alcuni metodi dell’Adapter che ritroviamo anche nel caso della RecyclerView e che permettono di risolvere il problema in modo analogo. Per vedere in dettaglio questo meccanismo per le RecyclerView realizziamo un esempio analogo, che ci permetta di visualizzare le righe con colore di background alternato.
NOTA
Sebbene il problema sia molto semplice, anche in questo caso utilizziamo una soluzione che può essere applicata anche nel caso in cui le differenze fossero molto più spiccate del solo colore di sfondo.
Abbiamo creato la classe AlternateStopListFragment, che abbiamo ottenuto dalle precedenti eliminando il codice non strettamente legato alla funzionalità. Se osserviamo il codice dell’esempio notiamo come l’unica differenza rispetto al caso precedente sia data dall’implementazione dell’Adapter, che ora è la seguente:
public final static class BusStopAdapter extends
RecyclerView.Adapter<BusStopViewHolder> {
private final List<BusStop> mModel;
BusStopAdapter(final List<BusStop> model) {
this.mModel = model;
}
@Override
public BusStopViewHolder onCreateViewHolder(ViewGroup viewGroup,
int viewType) {
final View layout;
if (viewType == 0) {
layout = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.bus_stop_layout, viewGroup, false);
} else {
layout = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.bus_stop_layout2, viewGroup, false);
}
return new BusStopViewHolder(layout);
}
@Override
public void onBindViewHolder(BusStopViewHolder busStopViewHolder, int position) {
busStopViewHolder.bind(mModel.get(position));
}
@Override
public int getItemCount() {
return mModel.size();
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
}
A differenza di quello che avveniva nell’Adapter della ListView, ora non ci serve sapere quanti sono i tipi diversi di View, ma ci serve semplicemente associare un id a ciascuna di esse in base alla loro posizione. Questo viene fatto attraverso il metodo:
public int getItemViewType(int position)
Il valore restituito lo ritroviamo poi come secondo parametro del metodo seguente, che andiamo a utilizzare per creare l’istanza corretta di ViewHolder:
public BusStopViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType)
Nel nostro caso, entrambe le righe sono gestite dallo stesso tipo di ViewHolder, differenziandosi semplicemente per il documento di layout da caricare. Nel caso in cui le View fossero molto diverse tra loro, avremmo dovuto istanziare dei ViewHolder descritti da classi diverse, che non solo caricavano documenti di layout diversi, ma implementavano anche logiche di bind diverse. In questo caso il risultato è ancora quello rappresentato nella Figura 7.28.
scaricare
Questo sito non memorizza alcun file sul suo server. Abbiamo solo indice e link contenuto fornito da altri siti. Contatta i fornitori di contenuti per rimuovere eventuali contenuti di copyright e inviaci un'email. Cancelleremo immediatamente i collegamenti o il contenuto pertinenti.
Corso di programmazione per ANDROID by Corso di programmazione per android (2012)(1146)
Steve Jobs (Italian Edition) by Walter Isaacson(1103)
Cibrario by cibrario(1016)
Android 6 by Massimo Carli(1002)
La mucca viola by Seth Godin(990)
10.16 di 1 by Kelly James Patrick(944)
Virus by Bluebook(938)
Homo Deus by Yuval Noah Harari(934)
Lavoro vivo by Unknown(932)
faggin - Silicio by Federico Faggin(821)
Business Adventures by John Brooks(800)
Terapia totale by Michael Palmer(774)
Creare progetti con Arduino For Dummies: Con 12 progetti facili da realizzare! by Brock Craft(764)
Connessi e isolati by Manfred Spitzer(732)
Emergenza smartphone by Manfred Spitzer(731)
Mac per tutti 05 by A. E. Stanley(707)
Mac per tutti 08 by A. E. Stanley(688)
Dentro un PC: Guida pratica per i newbies dell'assemblaggio (Italian Edition) by D'Andrea Felice(680)
Smartphone sicuro (Italian Edition) by Gianluigi Bonanomi & Domenico Martini(664)